package modelo;

import org.hibernate.HibernateException;
import org.hibernate.Session;

import entities.MozoEntity;
import entities.ProductoEntity;
import entities.ProductoEntity;
import hbt.AbstractHibernateManager;

public class ProductoDao extends AbstractHibernateManager {
	
	private static ProductoDao instancia = null;
	
	public static ProductoDao getInstancia() {
		if(instancia == null) {
			instancia = new ProductoDao();
		}
		return instancia;
	}
	
	
	public void save(ProductoEntity p){
		Session s= null;
		try {
			s=getNewSession();
			s.beginTransaction();
			s.persist(p);
			s.flush();
			s.getTransaction().commit();
			System.out.println("[producto PERSISTED ON TABLE productos]::OK");
		} catch (HibernateException e) {
			e.printStackTrace();
		} finally {
			closeSession(s);
		}
	}
	
	public void guardar(ProductoEntity p){
		Session s= null;
		try {
			s=getNewSession();
			s.beginTransaction();
			s.save(p);
			s.flush();
			s.getTransaction().commit();
			System.out.println("[producto SAVED ON TABLE productos]::OK");
		} catch (HibernateException e) {
			e.printStackTrace();
		} finally {
			closeSession(s);
		}
	}
	
	
	public ProductoEntity obtenerProducto(Integer id) {
		Session s = null;
		ProductoEntity productoE = new ProductoEntity();
		
		try {
			s = getNewSession();
			productoE =  (ProductoEntity) s.createQuery("FROM ProductoEntity prod " +
									"WHERE prod.id = :id")
							  .setInteger("id", id).uniqueResult();
//			System.out.println("\nNombre Sucursal: "+productoE.getTipoUso());
		} catch (HibernateException e) {
			e.printStackTrace();
		} finally{
			closeSession(s);
		}
		return productoE;
	}
}
